﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace planetExpressLib
{
    public class reservaEN
    {
        private int idReserva;
        private DateTime fecha;
        private float precioTotal;
        private planetaEN destino;
        private clienteEN cliente;
        private oficinaEN oficina;
        private List<pasajeroEN> pasajeros;
        private tipoViajeEN tipo;
        
        private reservaCAD reserva_CAD;

        // --- CONSTRUCTORES --- //
        public reservaEN()
        {
            idReserva = -1;
            fecha = new DateTime();
            precioTotal = 0;
            destino = null;
            cliente = null;
            oficina = null;
            pasajeros = new List<pasajeroEN>();
        }

        public reservaEN(reservaEN nueva)
        {
            idReserva = nueva.idReserva;
            fecha = nueva.fecha;
            precioTotal = nueva.precioTotal;
            destino = nueva.destino;
            cliente = nueva.cliente;
            oficina = nueva.oficina;
            if (pasajeros != null)
            {
                pasajeros = null;
                if (nueva.pasajeros != null)
                    pasajeros = new List<pasajeroEN>(nueva.pasajeros);
            }
        }

        // --- SETTERS Y GETTERS --- //
        public int IdReserva
        {
            get { return idReserva; }
            set { idReserva = value; }
        }

        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }

        public float PrecioTotal
        {
            get { return precioTotal; }
            set { precioTotal = value; }
        }

        public planetaEN Destino
        {
            get { return destino; }
            set { destino = value; }
        }

        public clienteEN Cliente
        {
            get { return cliente; }
            set { cliente = value; }
        }

        public oficinaEN Oficina
        {
            get { return oficina; }
            set { oficina = value; }
        }

        public tipoViajeEN Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }

        // --- CONEXION CON CAD --- //
        public void insert()
        {
            reserva_CAD = new reservaCAD();
            reserva_CAD.insert(this);
        }

        public void update()
        {
            reserva_CAD = new reservaCAD();
            reserva_CAD.update(this);
        }

        public void delete()
        {
            reserva_CAD = new reservaCAD();
            reserva_CAD.delete(idReserva);
        }

        public reservaEN readID(int id)
        {
            reserva_CAD = new reservaCAD();
            return reserva_CAD.readID(id);
        }

        public List<reservaEN> readAll()
        {
            reserva_CAD = new reservaCAD();
            return reserva_CAD.readAll();
        }
    }
}
